<?php

class Application_Model_DbTable_Inscritos extends Zend_Db_Table_Abstract {

    protected $_name = 'inscritos';

    public function reporte1() {
        $db = Zend_Db_Table::getDefaultAdapter();
        $select = $db->select();
        $select->from(array('p' => 'proycurriculares'), array('p.nombre'))
                ->join(array('e' => 'estudiantes')
                        , 'e.codigoProyCurricular = p.codigoProyCurricular'
                        , array())
                ->join(array('i' => 'inscritos')
                        , 'i.codigoEstudiante = e.codigoEstudiante and i.estadoActual = 1'
                        , array('sum(case when i.tipoAuxilio = "t" then 1 else 0 end)total'
                    , 'sum(case when i.tipoAuxilio = "a" then 1 else 0 end)tipo_A'
                    , 'sum(case when i.tipoAuxilio = "b" then 1 else 0 end)tipo_B'
                    , 'sum(case when i.tipoAuxilio = "n" then 1 else 0 end)sin_subsidio'
                    , 'cnt' => 'count(i.tipoAuxilio)'))
                ->group("p.codigoproycurricular");
        return Zend_Db_Table::getDefaultAdapter()->fetchAll($select);
    }

    public function reporte2($genero) {
        $db = Zend_Db_Table::getDefaultAdapter();
        $select = $db->select();
        $select->from(array('p' => 'proycurriculares'), array('p.nombre'))
                ->join(array('e' => 'estudiantes')
                        , 'e.codigoProyCurricular = p.codigoProyCurricular and e.genero =' . '"' . $genero . '"'
                        , array())
                ->join(array('i' => 'inscritos')
                        , 'i.codigoEstudiante = e.codigoEstudiante and i.estadoActual = 1'
                        , array('sum(case when i.tipoAuxilio = "t" then 1 else 0 end)total'
                    , 'sum(case when i.tipoAuxilio = "a" then 1 else 0 end)tipo_A'
                    , 'sum(case when i.tipoAuxilio = "b" then 1 else 0 end)tipo_B'
                    , 'sum(case when i.tipoAuxilio = "n" then 1 else 0 end)sin_subsidio'
                    , 'cnt' => 'count(i.tipoAuxilio)'))
                ->group("p.codigoproycurricular");
        return Zend_Db_Table::getDefaultAdapter()->fetchAll($select);
    }

    public function reporte3() {
        $db = Zend_Db_Table::getDefaultAdapter();
        $select = $db->select();
        $select->from(array('p' => 'proycurriculares'), array('p.nombre'))
                ->join(array('e' => 'estudiantes')
                        , 'e.codigoProyCurricular = p.codigoProyCurricular'
                        , array())
                ->join(array('i' => 'inscritos'), 'i.codigoEstudiante = e.codigoEstudiante and i.estadoActual = 1', array(
                    'sum(case when i.tipoAuxilio = "t" and e.estratoResidencia = "1" then 1 else 0 end)t1',
                    'sum(case when i.tipoAuxilio = "t" and e.estratoResidencia = "2" then 1 else 0 end)t2',
                    'sum(case when i.tipoAuxilio = "t" and e.estratoResidencia = "3" then 1 else 0 end)t3',
                    'sum(case when i.tipoAuxilio = "t" and e.estratoResidencia = "4" then 1 else 0 end)t4',
                    'sum(case when i.tipoAuxilio = "t" and e.estratoResidencia = "5" then 1 else 0 end)t5',
                    'sum(case when i.tipoAuxilio = "t" and e.estratoResidencia = "6" then 1 else 0 end)t6',
                    'sum(case when i.tipoAuxilio = "a" and e.estratoResidencia = "1" then 1 else 0 end)a1',
                    'sum(case when i.tipoAuxilio = "a" and e.estratoResidencia = "2" then 1 else 0 end)a2',
                    'sum(case when i.tipoAuxilio = "a" and e.estratoResidencia = "3" then 1 else 0 end)a3',
                    'sum(case when i.tipoAuxilio = "a" and e.estratoResidencia = "4" then 1 else 0 end)a4',
                    'sum(case when i.tipoAuxilio = "a" and e.estratoResidencia = "5" then 1 else 0 end)a5',
                    'sum(case when i.tipoAuxilio = "a" and e.estratoResidencia = "6" then 1 else 0 end)a6',
                    'sum(case when i.tipoAuxilio = "b" and e.estratoResidencia = "1" then 1 else 0 end)b1',
                    'sum(case when i.tipoAuxilio = "b" and e.estratoResidencia = "2" then 1 else 0 end)b2',
                    'sum(case when i.tipoAuxilio = "b" and e.estratoResidencia = "3" then 1 else 0 end)b3',
                    'sum(case when i.tipoAuxilio = "b" and e.estratoResidencia = "4" then 1 else 0 end)b4',
                    'sum(case when i.tipoAuxilio = "b" and e.estratoResidencia = "5" then 1 else 0 end)b5',
                    'sum(case when i.tipoAuxilio = "b" and e.estratoResidencia = "6" then 1 else 0 end)b6',
                    'sum(case when i.tipoAuxilio = "n" and e.estratoResidencia = "1" then 1 else 0 end)sin1',
                    'sum(case when i.tipoAuxilio = "n" and e.estratoResidencia = "2" then 1 else 0 end)sin2',
                    'sum(case when i.tipoAuxilio = "n" and e.estratoResidencia = "3" then 1 else 0 end)sin3',
                    'sum(case when i.tipoAuxilio = "n" and e.estratoResidencia = "4" then 1 else 0 end)sin4',
                    'sum(case when i.tipoAuxilio = "n" and e.estratoResidencia = "5" then 1 else 0 end)sin5',
                    'sum(case when i.tipoAuxilio = "n" and e.estratoResidencia = "6" then 1 else 0 end)sin6',
                    'cnt' => 'count(i.tipoAuxilio)'))
                ->group("p.codigoproycurricular");
        return Zend_Db_Table::getDefaultAdapter()->fetchAll($select);
    }

    public function reporte4($genero) {
        $db = Zend_Db_Table::getDefaultAdapter();
        $select = $db->select();
        $select->from(array('p' => 'proycurriculares'), array('p.nombre'))
                ->join(array('e' => 'estudiantes')
                        , 'e.codigoProyCurricular = p.codigoProyCurricular and e.genero =' . '"' . $genero . '"'
                        , array())
                ->join(array('i' => 'inscritos'), 'i.codigoEstudiante = e.codigoEstudiante and i.estadoActual = 1', array(
                    'sum(case when i.tipoAuxilio = "t" and e.estratoResidencia = "1" then 1 else 0 end)t1',
                    'sum(case when i.tipoAuxilio = "t" and e.estratoResidencia = "2" then 1 else 0 end)t2',
                    'sum(case when i.tipoAuxilio = "t" and e.estratoResidencia = "3" then 1 else 0 end)t3',
                    'sum(case when i.tipoAuxilio = "t" and e.estratoResidencia = "4" then 1 else 0 end)t4',
                    'sum(case when i.tipoAuxilio = "t" and e.estratoResidencia = "5" then 1 else 0 end)t5',
                    'sum(case when i.tipoAuxilio = "t" and e.estratoResidencia = "6" then 1 else 0 end)t6',
                    'sum(case when i.tipoAuxilio = "a" and e.estratoResidencia = "1" then 1 else 0 end)a1',
                    'sum(case when i.tipoAuxilio = "a" and e.estratoResidencia = "2" then 1 else 0 end)a2',
                    'sum(case when i.tipoAuxilio = "a" and e.estratoResidencia = "3" then 1 else 0 end)a3',
                    'sum(case when i.tipoAuxilio = "a" and e.estratoResidencia = "4" then 1 else 0 end)a4',
                    'sum(case when i.tipoAuxilio = "a" and e.estratoResidencia = "5" then 1 else 0 end)a5',
                    'sum(case when i.tipoAuxilio = "a" and e.estratoResidencia = "6" then 1 else 0 end)a6',
                    'sum(case when i.tipoAuxilio = "b" and e.estratoResidencia = "1" then 1 else 0 end)b1',
                    'sum(case when i.tipoAuxilio = "b" and e.estratoResidencia = "2" then 1 else 0 end)b2',
                    'sum(case when i.tipoAuxilio = "b" and e.estratoResidencia = "3" then 1 else 0 end)b3',
                    'sum(case when i.tipoAuxilio = "b" and e.estratoResidencia = "4" then 1 else 0 end)b4',
                    'sum(case when i.tipoAuxilio = "b" and e.estratoResidencia = "5" then 1 else 0 end)b5',
                    'sum(case when i.tipoAuxilio = "b" and e.estratoResidencia = "6" then 1 else 0 end)b6',
                    'sum(case when i.tipoAuxilio = "n" and e.estratoResidencia = "1" then 1 else 0 end)sin1',
                    'sum(case when i.tipoAuxilio = "n" and e.estratoResidencia = "2" then 1 else 0 end)sin2',
                    'sum(case when i.tipoAuxilio = "n" and e.estratoResidencia = "3" then 1 else 0 end)sin3',
                    'sum(case when i.tipoAuxilio = "n" and e.estratoResidencia = "4" then 1 else 0 end)sin4',
                    'sum(case when i.tipoAuxilio = "n" and e.estratoResidencia = "5" then 1 else 0 end)sin5',
                    'sum(case when i.tipoAuxilio = "n" and e.estratoResidencia = "6" then 1 else 0 end)sin6',
                    'cnt' => 'count(i.tipoAuxilio)'))
                ->group("p.codigoproycurricular");
        return Zend_Db_Table::getDefaultAdapter()->fetchAll($select);
    }

    public function reporte5($facultad) {
        $db = Zend_Db_Table::getDefaultAdapter();
        $select = $db->select();
        $select->from(array('p' => 'proycurriculares'), array('p.nombre'))
                ->join(array('e' => 'estudiantes')
                        , 'e.codigoProyCurricular = p.codigoProyCurricular and p.codigoFacultad =' . '"' . $facultad . '"'
                        , array())
                ->join(array('i' => 'inscritos')
                        , 'i.codigoEstudiante = e.codigoEstudiante and i.estadoActual = 1'
                        , array('sum(case when i.tipoAuxilio = "t" then 1 else 0 end)total'
                    , 'sum(case when i.tipoAuxilio = "a" then 1 else 0 end)tipo_A'
                    , 'sum(case when i.tipoAuxilio = "b" then 1 else 0 end)tipo_B'
                    , 'sum(case when i.tipoAuxilio = "n" then 1 else 0 end)sin_subsidio'
                    , 'cnt' => 'count(i.tipoAuxilio)'))
                ->group("p.codigoproycurricular");
        return Zend_Db_Table::getDefaultAdapter()->fetchAll($select);
    }

    public function reporte6($facultad, $genero) {
        $db = Zend_Db_Table::getDefaultAdapter();
        $select = $db->select();
        $select->from(array('p' => 'proycurriculares'), array('p.nombre'))
                ->join(array('e' => 'estudiantes')
                        , 'e.codigoProyCurricular = p.codigoProyCurricular and e.genero =' . '"' . $genero . '"' .
                        'and p.codigoFacultad =' . '"' . $facultad . '"'
                        , array())
                ->join(array('i' => 'inscritos')
                        , 'i.codigoEstudiante = e.codigoEstudiante and i.estadoActual = 1'
                        , array('sum(case when i.tipoAuxilio = "t" then 1 else 0 end)total'
                    , 'sum(case when i.tipoAuxilio = "a" then 1 else 0 end)tipo_A'
                    , 'sum(case when i.tipoAuxilio = "b" then 1 else 0 end)tipo_B'
                    , 'sum(case when i.tipoAuxilio = "n" then 1 else 0 end)sin_subsidio'
                    , 'cnt' => 'count(i.tipoAuxilio)'))
                ->group("p.codigoproycurricular");
        return Zend_Db_Table::getDefaultAdapter()->fetchAll($select);
    }

    public function reporte7($facultad) {
        $db = Zend_Db_Table::getDefaultAdapter();
        $select = $db->select();
        $select->from(array('p' => 'proycurriculares'), array('p.nombre'))
                ->join(array('e' => 'estudiantes')
                        , 'e.codigoProyCurricular = p.codigoProyCurricular and p.codigoFacultad =' . '"' . $facultad . '"'
                        , array())
                ->join(array('i' => 'inscritos'), 'i.codigoEstudiante = e.codigoEstudiante and i.estadoActual = 1', array(
                    'sum(case when i.tipoAuxilio = "t" and e.estratoResidencia = "1" then 1 else 0 end)t1',
                    'sum(case when i.tipoAuxilio = "t" and e.estratoResidencia = "2" then 1 else 0 end)t2',
                    'sum(case when i.tipoAuxilio = "t" and e.estratoResidencia = "3" then 1 else 0 end)t3',
                    'sum(case when i.tipoAuxilio = "t" and e.estratoResidencia = "4" then 1 else 0 end)t4',
                    'sum(case when i.tipoAuxilio = "t" and e.estratoResidencia = "5" then 1 else 0 end)t5',
                    'sum(case when i.tipoAuxilio = "t" and e.estratoResidencia = "6" then 1 else 0 end)t6',
                    'sum(case when i.tipoAuxilio = "a" and e.estratoResidencia = "1" then 1 else 0 end)a1',
                    'sum(case when i.tipoAuxilio = "a" and e.estratoResidencia = "2" then 1 else 0 end)a2',
                    'sum(case when i.tipoAuxilio = "a" and e.estratoResidencia = "3" then 1 else 0 end)a3',
                    'sum(case when i.tipoAuxilio = "a" and e.estratoResidencia = "4" then 1 else 0 end)a4',
                    'sum(case when i.tipoAuxilio = "a" and e.estratoResidencia = "5" then 1 else 0 end)a5',
                    'sum(case when i.tipoAuxilio = "a" and e.estratoResidencia = "6" then 1 else 0 end)a6',
                    'sum(case when i.tipoAuxilio = "b" and e.estratoResidencia = "1" then 1 else 0 end)b1',
                    'sum(case when i.tipoAuxilio = "b" and e.estratoResidencia = "2" then 1 else 0 end)b2',
                    'sum(case when i.tipoAuxilio = "b" and e.estratoResidencia = "3" then 1 else 0 end)b3',
                    'sum(case when i.tipoAuxilio = "b" and e.estratoResidencia = "4" then 1 else 0 end)b4',
                    'sum(case when i.tipoAuxilio = "b" and e.estratoResidencia = "5" then 1 else 0 end)b5',
                    'sum(case when i.tipoAuxilio = "b" and e.estratoResidencia = "6" then 1 else 0 end)b6',
                    'sum(case when i.tipoAuxilio = "n" and e.estratoResidencia = "1" then 1 else 0 end)sin1',
                    'sum(case when i.tipoAuxilio = "n" and e.estratoResidencia = "2" then 1 else 0 end)sin2',
                    'sum(case when i.tipoAuxilio = "n" and e.estratoResidencia = "3" then 1 else 0 end)sin3',
                    'sum(case when i.tipoAuxilio = "n" and e.estratoResidencia = "4" then 1 else 0 end)sin4',
                    'sum(case when i.tipoAuxilio = "n" and e.estratoResidencia = "5" then 1 else 0 end)sin5',
                    'sum(case when i.tipoAuxilio = "n" and e.estratoResidencia = "6" then 1 else 0 end)sin6',
                    'cnt' => 'count(i.tipoAuxilio)'))
                ->group("p.codigoproycurricular");
        return Zend_Db_Table::getDefaultAdapter()->fetchAll($select);
    }

    public function reporte8($facultad, $genero) {
        $db = Zend_Db_Table::getDefaultAdapter();
        $select = $db->select();
        $select->from(array('p' => 'proycurriculares'), array('p.nombre'))
                ->join(array('e' => 'estudiantes')
                        , 'e.codigoProyCurricular = p.codigoProyCurricular and e.genero =' . '"' . $genero . '"' .
                        'and p.codigoFacultad =' . '"' . $facultad . '"'
                        , array())
                ->join(array('i' => 'inscritos'), 'i.codigoEstudiante = e.codigoEstudiante and i.estadoActual = 1', array(
                    'sum(case when i.tipoAuxilio = "t" and e.estratoResidencia = "1" then 1 else 0 end)t1',
                    'sum(case when i.tipoAuxilio = "t" and e.estratoResidencia = "2" then 1 else 0 end)t2',
                    'sum(case when i.tipoAuxilio = "t" and e.estratoResidencia = "3" then 1 else 0 end)t3',
                    'sum(case when i.tipoAuxilio = "t" and e.estratoResidencia = "4" then 1 else 0 end)t4',
                    'sum(case when i.tipoAuxilio = "t" and e.estratoResidencia = "5" then 1 else 0 end)t5',
                    'sum(case when i.tipoAuxilio = "t" and e.estratoResidencia = "6" then 1 else 0 end)t6',
                    'sum(case when i.tipoAuxilio = "a" and e.estratoResidencia = "1" then 1 else 0 end)a1',
                    'sum(case when i.tipoAuxilio = "a" and e.estratoResidencia = "2" then 1 else 0 end)a2',
                    'sum(case when i.tipoAuxilio = "a" and e.estratoResidencia = "3" then 1 else 0 end)a3',
                    'sum(case when i.tipoAuxilio = "a" and e.estratoResidencia = "4" then 1 else 0 end)a4',
                    'sum(case when i.tipoAuxilio = "a" and e.estratoResidencia = "5" then 1 else 0 end)a5',
                    'sum(case when i.tipoAuxilio = "a" and e.estratoResidencia = "6" then 1 else 0 end)a6',
                    'sum(case when i.tipoAuxilio = "b" and e.estratoResidencia = "1" then 1 else 0 end)b1',
                    'sum(case when i.tipoAuxilio = "b" and e.estratoResidencia = "2" then 1 else 0 end)b2',
                    'sum(case when i.tipoAuxilio = "b" and e.estratoResidencia = "3" then 1 else 0 end)b3',
                    'sum(case when i.tipoAuxilio = "b" and e.estratoResidencia = "4" then 1 else 0 end)b4',
                    'sum(case when i.tipoAuxilio = "b" and e.estratoResidencia = "5" then 1 else 0 end)b5',
                    'sum(case when i.tipoAuxilio = "b" and e.estratoResidencia = "6" then 1 else 0 end)b6',
                    'sum(case when i.tipoAuxilio = "n" and e.estratoResidencia = "1" then 1 else 0 end)sin1',
                    'sum(case when i.tipoAuxilio = "n" and e.estratoResidencia = "2" then 1 else 0 end)sin2',
                    'sum(case when i.tipoAuxilio = "n" and e.estratoResidencia = "3" then 1 else 0 end)sin3',
                    'sum(case when i.tipoAuxilio = "n" and e.estratoResidencia = "4" then 1 else 0 end)sin4',
                    'sum(case when i.tipoAuxilio = "n" and e.estratoResidencia = "5" then 1 else 0 end)sin5',
                    'sum(case when i.tipoAuxilio = "n" and e.estratoResidencia = "6" then 1 else 0 end)sin6',
                    'cnt' => 'count(i.tipoAuxilio)'))
                ->group("p.codigoproycurricular");
        return Zend_Db_Table::getDefaultAdapter()->fetchAll($select);
    }

    public function reporte9($facultad) {
        $db = Zend_Db_Table::getDefaultAdapter();
        $select = $db->select();
        $select->from(array('p' => 'proycurriculares'), array('p.nombre'))
                ->join(array('e' => 'estudiantes')
                        , 'e.codigoProyCurricular = p.codigoProyCurricular and p.codigoFacultad =' . '"' . $facultad . '"'
                        , array())
                ->join(array('i' => 'inscritos'), 'i.codigoEstudiante = e.codigoEstudiante and i.estadoActual = 1 
                    and i.tipoAuxilio != "n"', array('cnt' => 'count(i.codigoEstudiante)'))
                ->group("p.codigoproycurricular");
        return Zend_Db_Table::getDefaultAdapter()->fetchAll($select);
    }

    public function reporte10($facultad) {
        $db = Zend_Db_Table::getDefaultAdapter();
        $select = $db->select();
        $select->from(array('e' => 'estudiantes'), array('codigo' => 'e.codigoEstudiante', 'nombre' => 'e.nombres'
                    , 'apellidos' => 'e.apellidos', 'tipoDoc' => 'e.tipoDocIdentidad', 'nroDoc' => 'e.nroDocIdentidad'))
                ->join(array('p' => 'proycurriculares')
                        , 'e.codigoProyCurricular = p.codigoProyCurricular'
                        , array('carrera' => 'p.nombre'))
                ->join(array('i' => 'inscritos')
                        , 'i.codigoEstudiante = e.codigoEstudiante and i.estadoActual = 1 and tipoAuxilio != "n"'
                        , array('auxilio' => 'i.tipoAuxilio'))
                ->where('codigoFacultad = ?', $facultad);
        ;
        return Zend_Db_Table::getDefaultAdapter()->fetchAll($select);
    }

    public function reporte11() {
        $db = Zend_Db_Table::getDefaultAdapter();
        $select = $db->select();
        $select->from(array('e' => 'estudiantes'), array('codigo' => 'e.codigoEstudiante', 'nombre' => 'e.nombres'
                    , 'apellidos' => 'e.apellidos', 'tipoDoc' => 'e.tipoDocIdentidad', 'nroDoc' => 'e.nroDocIdentidad'))
                ->join(array('p' => 'proycurriculares')
                        , 'e.codigoProyCurricular = p.codigoProyCurricular'
                        , array('carrera' => 'p.nombre'))
                ->join(array('i' => 'inscritos')
                        , 'i.codigoEstudiante = e.codigoEstudiante and i.estadoActual = 1 and tipoAuxilio != "n"'
                        , array('auxilio' => 'i.tipoAuxilio'));
        ;
        return Zend_Db_Table::getDefaultAdapter()->fetchAll($select);
    }

    public function agregar($codigo, $matricula, $ingresos, $autosostenimiento, $sostieneHogar, $nucleo, $descripcionNucleo, $personasCargo, $descripcionPC, $procedeFueraBogota, $ciudadOrigen, $desplazado, $discapacidad, $patologias, $patologiasDescripcion, $seguridadSocial, $estadoCivil, $promedio, $asignaturasPerdidas, $poblacion, $reservista, $estadoActual, $tipoAuxilio) {

        $fecha = date("Y/m/d");
        $data = array(
            'codigoEstudiante' => $codigo,
            'fechaInscripcion' => $fecha,
            'matriculaValor' => $matricula,
            'ingresosPercapita' => $ingresos,
            'independienteDependiente' => $autosostenimiento,
            'sostieneHogar' => $sostieneHogar,
            'perteneceNucleoFamiliar' => $nucleo,
            'nucleoDescripcion' => $descripcionNucleo,
            'personasCargo' => $personasCargo,
            'personasCargoDescripcion' => $descripcionPC,
            'procedeFueraBogota' => $procedeFueraBogota,
            'idCiudadOrigen' => $ciudadOrigen,
            'desplazado' => $desplazado,
            'discapacidad' => $discapacidad,
            'patologias' => $patologias,
            'patologiasDescripcion' => $patologiasDescripcion,
            'seguridadSocial' => $seguridadSocial,
            'estadoCivil' => $estadoCivil,
            'promedioAcademico' => $promedio,
            'nroAsigPerdidas' => $asignaturasPerdidas,
            'poblacionTipo' => $poblacion,
            'reservista' => $reservista,
            'estadoActual' => $estadoActual,
            'tipoAuxilio' => $tipoAuxilio,
        );
        $this->insert($data);
    }

    public function getTipoAuxilio($codigo) {

        $inscripciones = new Application_Model_DbTable_Inscripciones();
        $fechaInscripcion = $inscripciones->getFechaInscripcionActual($codigo);

        $db = Zend_Db_Table::getDefaultAdapter();
        $select = $db->select();
        $select->from(array('i' => 'inscritos'), array('tipoAux' => 'i.tipoAuxilio'))
                ->where('codigoEstudiante = ?', $codigo)
                ->where('fechaInscripcion = ?', $fechaInscripcion)
                ->limit(1);
        $resultado = Zend_Db_Table::getDefaultAdapter()->fetchRow($select);

        return $resultado["tipoAux"];
    }

    public function consultar_datos_beneficiario_Actual($codigo) {
        $inscripcion = new Application_Model_DbTable_Inscripciones();
        $fechaInscripcion = $inscripcion->getFechaInscripcionActual($codigo);

          $db = Zend_Db_Table::getDefaultAdapter();
          $select = $db->select()
          ->from('inscritos')
          ->where('codigoEstudiante = ?', $codigo)
          ->where('fechaInscripcion = ?', $fechaInscripcion);
          $query = $db->fetchRow($select);
          return $query;
        /*$select = $db->select()
                ->from('products', array('fechaInscripcion', 'matriculaValor'))
                ->where('codigoEstudiante = ', $codigo)
                ->where('product_name = ?', $prod);*/
    }

}

